package org.gpp.proj1.robot;

import java.util.List;

import org.gpp.proj1.robot.part.SparePart;
import org.gpp.proj1.robot.part.emissor.Emissor;

import com.jme.scene.Node;

/**
 * Interface for a game robot
 * 
 * @author Paolo Victor, paolovictor@gmail.com
 */
public interface Robot {	
	/**
	 * Sets the robot's part to the given part
	 * 
	 * @param boneGroup The bone group the part will be attached to
	 * @param partLocation
	 * @param part
	 */
	public void setPart( String boneGroup, SparePart part );
	
	/**
	 * Sets the robot's animation to one with the given animation name
	 * @param animation
	 */
	public void setAnimation( String animation );

	/**
	 * Attachs a particle emissor to the robot
	 * 
	 * @param boneName The model which the emissor must be attached to
	 * @param emissor The emissor
	 */
	public void attachEmissor( String boneName, Emissor emissor );
	
	/**
	 * Detachs a particle emissor to the robot
	 * 
	 * @param emissor
	 */
	public void removeEmissor( String boneName, Emissor emissor );

	public Node getNode();

	public void updateAnimation(float tpf);
	
	public List<String> getExecutableActions();

	public void executeAction( String partGroup, String action );
	
	public void executeAction( String partGroup, String action, List<Robot> targets );
	
}
